The present invention relates generally to the field of data communications, and more particularly, to the field of serial communications bus controllers and microcontrollers that incorporate the same.
CAN (Control Area Network) is an industry-standard, two-wire serial communications bus that is widely used in automotive and industrial control applications, as well as in medical devices, avionics, office automation equipment, consumer appliances, and many other products and applications. CAN controllers are currently available either as stand-alone devices adapted to interface with a microcontroller or as circuitry integrated into or modules embedded in a microcontroller chip. Since 1986, CAN users (software programmers) have developed numerous high-level CAN Application Layers (CALs) which extend the capabilities of the CAN while employing the CAN physical layer and the CAN frame format, and adhering to the CAN specification. CALs have heretofore been implemented primarily in software, with very little hardware CAL support. Consequently, CALs have heretofore required a great deal of host CPU intervention, thereby increasing the processing overhead and diminishing the performance of the host CPU.
Thus, there is a need in the art for a CAN hardware implementation of CAL functions normally implemented in software in order to offload these tasks from the host CPU to the CAN hardware, thereby enabling a great savings in host CPU processing resources and a commensurate improvement in host CPU performance. One of the most demanding and CPU resource-intensive CAL functions is message management, which entails the handling, storage, and processing of incoming CAL/CAN messages received over the CAN serial communications bus and/or outgoing CAL/CAN messages transmitted over the CAN serial communications bus. CAL protocols, such as DeviceNet, CANopen, and OSEK, deliver long messages distributed over many CAN frames, which methodology is sometimes referred to as xe2x80x9cfragmentedxe2x80x9d or xe2x80x9csegmentedxe2x80x9d messaging. The process of assembling such fragmented, multi-frame messages has heretofore required a great deal of host CPU intervention. In particular, CAL software running on the host CPU actively monitors and manages the buffering and processing of the message data, in order to facilitate the assembly of the message fragments or segments into complete messages.
Based on the above and foregoing, it can be appreciated that there presently exists a need in the art for a hardware implementation of CAL functions normally implemented in software in order to offload these tasks from the host CPU, thereby enabling a great savings in host CPU processing resources and a commensurate improvement in host CPU performance.
The assignee of the present invention has recently developed a new microcontroller product, designated xe2x80x9cXA-C3xe2x80x9d, that fulfills this need in the art. The XA-C3 is the newest member of the Philips XA (Extended Architecture) family of high performance 16-bit single-chip microcontrollers. It is believed that the XA-C3 is the first chip that features hardware CAL support.
The XA-C3 is a CMOS 16-bit CAL/CAN 2.0B microcontroller that incorporates a number of different inventions, including the present invention. These inventions include novel techniques and hardware for filtering, buffering, handling, and processing CAL/CAN messages, including the automatic assembly of multi-frame fragmented messages with minimal CPU intervention, as well as for managing the storage and retrieval of the message data, and the memory resources utilized therefor.
The present invention relates to a method for writing back message ID information of a received, non-fragmented CAN frame, to a match ID register(s), to enable the message ID information to be obtained by software, including bits which were masked during a xe2x80x9cmatch and maskxe2x80x9d acceptance filtering process. This technique enables the software to unambiguously identify the received CAN message frame, without having to waste valuable message buffer storage area by storing this message ID information along with the actual data bytes of the received CAN frame in the message buffer storage area.
The present invention encompasses a method for acceptance filtering incoming CAN frames, in a CAN device that provides a plurality of message objects each of which has an associated message buffer, at least one associated match ID register, and at least one associated mask register. The method includes the steps of extracting a multi-bit screener ID field from a received CAN frame, and then comparing the extracted screener ID field to a respective, user-specified multi-bit match ID field stored in the at least one match ID register associated with each enabled one of the message objects designated to be a receive message object, wherein the at least one mask register associated with each enabled message object designated to be a receive message object stores a user-specified, multi-bit mask field that masks selected bits of the corresponding match ID field, the masked bits being excluded from the comparisons. If a match is found as a result of the comparing step, data bytes of the received CAN frame are stored in the message buffer associated with the matching message object, and the extracted screener ID field is written into the at least one match ID register associated with the matching message object to replace the match ID field associated with the matching message object. The extracted screener ID field is not stored in the message buffer associated with the matching message object.
In a preferred embodiment, each multi-bit mask field has bit positions corresponding to all bit positions of the corresponding match ID field except for a match IDE bit position. The received CAN frame can be either a Standard CAN frame or an Extended CAN frame. In the case of a Standard CAN frame, the extracted screener ID field is 28 bits, consisting of 11 CAN ID bits extracted from a header portion of the received CAN frame, plus 8 bits from a first data byte of the received CAN frame, plus 8 bits from a second data byte of the received CAN frame, plus an IDE bit of the received CAN frame. In the case of an Extended CAN frame, the extracted screener ID field is 30 bits, consisting of 29 CAN ID bits extracted from a header portion of the received CAN frame, plus an IDE bit of the received CAN frame.
The present invention, in another of its aspects, encompasses a CAN device, e.g., a CAN microcontroller, that implements the above-described method.